Location-Based Display of Pixel History

ABSTRACT

Various techniques present, on a display of a user device, a current screen including an element distinct from a previous element of a previous screen. The previous element was presented at a location on less than an entirety of the previous screen. The user device receives a gesture input that requests that the previous element be presented within the current screen next to a current element of the current screen. The gesture input indicates a location of the current element, wherein the location of the current element is less than an entirety of the current screen and is the same location at which the previous element was presented on the previous screen. The user device presents, on the display of the user device and responsive to receiving the gesture input, a contemporaneous view of the previous element next to the current element at the location of the current element within the current screen.

PRIORITY

This application is a continuation of and claims priority to U.S. patentapplication Ser. No. 15/446,532, filed on Mar. 1, 2017, which is acontinuation of, and claims priority to U.S. patent application Ser. No.13/407,417, filed on Feb. 28, 2012, which are hereby incorporated byreference herein in their entireties.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to the processingof data. Specifically, the present disclosure addresses systems andmethods of facilitating location-based display of pixel history.

BACKGROUND

The presentation of modern graphics on a display (e.g., electronicdevice or monitor) often involves displaying a sequence (e.g., a series)of “screens” on the display. For example, an electronic display monitor(e.g., with a cathode ray tube or a plasma flat-panel display) maydisplay a rectangular arrangement of pixels, any one or more of whichmay change as each screen is displayed. A display may present one screenat a particular time and present another screen at another particulartime. Accordingly, a current screen may be presented at a current time(e.g., now), while a previous screen may have been presented at aprevious time (e.g., one minute ago or a day ago).

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings.

FIG. 1 is a network diagram illustrating a network environment suitablefor location-based display of pixel history, according to some exampleembodiments.

FIG. 2-5 are conceptual diagrams illustrating presentation of a previousscreen prior to presentation of a current screen, and a subsequentpresentation of a previous portion of the previous screen within thecurrent screen, according to some example embodiments.

FIG. 6 is a block diagram illustrating components of a pixel historymachine suitable for location-based display of pixel history, accordingto some example embodiments.

FIG. 7-9 are flowcharts illustrating operations of the pixel historymachine in performing a method of location-based display of pixelhistory, according to some example embodiments.

FIG. 10 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein.

DETAILED DESCRIPTION

Example methods and systems are directed to location-based display ofpixel history. Examples merely typify possible variations. Unlessexplicitly stated otherwise, components and functions are optional andmay be combined or subdivided, and operations may vary in sequence or becombined or subdivided. In the following description, for purposes ofexplanation, numerous specific details are set forth to provide athorough understanding of example embodiments. It will be evident to oneskilled in the art, however, that the present subject matter may bepracticed without these specific details.

A pixel history machine (e.g., with a processor) may include a displayand may be configured (e.g., by software) to receive one or morelocations as a definition of an area for a portion of a screen. Forexample, the pixel history machine may receive (e.g., from a user, via auser interface) coordinates of one or more corners of the display, wherethese corners define the area encompassed by the portion of the screen.Once defined by location, the area may be stored as a portion of ascreen. This may be performed by the pixel history machine for eachscreen presented on the display. Accordingly, the pixel history machinemay present (e.g., on the display) a first screen (e.g., a previousscreen) with a first portion (e.g., a previous portion) of the firstscreen, and the pixel history machine may store the first portion (e.g.,in a memory buffer, such as a browser cache).

The pixel history machine may be configured to present (e.g., on thedisplay) a second screen (e.g., a current screen) with a second portion(e.g., a current portion) of the second screen. For example, the displayof the pixel history machine may be cleared of the first screen andrefreshed (e.g., repainted or redrawn) with the second screen in thecourse of displaying a sequence of multiple screens. An example of asequence of multiple screens being presented on the display is theindividual frames of a motion picture (e.g., a movie or a video) beingsequentially shown on the display (e.g., full screen, partial screen, orwithin a window of a user interface). Another example is a computerdesktop (e.g., a background of a user interface, with or without one ormore icons) being changed from one configuration (e.g., a particularbackground with a particular set of icons) to another configuration(e.g., a different background with a different set of icons). A furtherexample is the contents of a window (e.g., of a graphical userinterface) being cleared of existing content and refreshed with newcontent (e.g., a web browser application clearing a currently displayedwebpage and displaying a new webpage).

The pixel history machine may be further configured to receive a requestthat the first portion (e.g., previous portion) of the first screen(e.g., previous screen) be presented within the second screen (e.g.,current screen). For example, this request may take the form of agesture being detected by the pixel history machine. Moreover, thegesture may identify the location of the area encompassed by the firstand second portions. Examples of such gestures include a swipe over thesecond portion (e.g., current portion) of the second screen (e.g.,current screen), a double tap or double click on the second portion ofthe second screen, or any suitable combination thereof In response tothis request, the pixel history machine may present the first portion ofthe first screen within (e.g., inside) the second screen (e.g., currentscreen). Presentation of the first portion may be performed with orwithout presentation of the second portion (e.g., current portion) ofthe second screen (e.g., current screen).

FIG. 1 is a network diagram illustrating a network environment 100suitable for location-based display of pixel history, according to someexample embodiments. The network environment 100 includes a pixelhistory machine 110, a database 115, and user devices 130 and 150, allcommunicatively coupled to each other via a network 190. The pixelhistory machine 110, the database 115, and the user devices 130 and 150may each be implemented in a computer system, in whole or in part, asdescribed below with respect to FIG. 10.

In some example embodiments, the pixel history machine 110 may be a webserver, a document server, image server, or any suitable combinationthereof. Certain example embodiments of the pixel history machine 110include a machine executing an operating system (e.g., a system-levelprogram or service) or an application (e.g., a software application).The pixel history machine 110 may be configured to present a sequence ofmultiple screens by communicating (e.g., providing) the sequence to oneor more of the user devices 130 and 150. In alternative exampleembodiments, the pixel history machine 110 may be a graphicalworkstation, a personal computer, a user device (e.g., similar to theuser devices 130 and 150), or any suitable combination thereof, and thepixel history machine 110 may be configured to present the sequence ofmultiple screens by displaying the sequence on a display (e.g., amonitor, flat-panel display, or touch screen) connected orcommunicatively coupled thereto.

The database 115 may form all or part of a memory buffer that isconfigured to store one or more portions of the sequence of multiplescreens presented by the pixel history machine 110. In some exampleembodiments, the database 115 is incorporated into the pixel historymachine 110 (e.g., as local storage).

Also shown in FIG. 1 are users 112, 132, and 152. One or more of theusers 112, 132, and 152 may be a human user (e.g., a human being), amachine user (e.g., a computer configured by a software program tointeract with the user device 130), or any suitable combination thereof(e.g., a human assisted by a machine or a machine supervised by ahuman). In example embodiments that include the user 112, the user 112is not part of the network environment 100, but is associated with thepixel history machine 110. For example, the pixel history machine 110may be a desktop computer, a vehicle computer, a tablet computer, anavigational device, a portable media device, or a smart phone belongingto the user 112. In example embodiments that include the user 132, theuser 132 is not part of the network environment 100, but is associatedwith the user device 130 and may be a user of the device 130. Forexample, the user device 130 may be a desktop computer, a vehiclecomputer, a tablet computer, a navigational device, a portable mediadevice, or a smart phone belonging to the user 132. Likewise, in exampleembodiments that include the user 152, the user 152 is not part of thenetwork environment 100, but is associated with the user device 150. Asan example, the user device 150 may be a desktop computer, a vehiclecomputer, a tablet computer, a navigational device, a portable mediadevice, or a smart phone belonging to the user 152.

Any of the machines, databases, or devices shown in FIG. 1 may beimplemented in a general-purpose computer modified (e.g., configured orprogrammed) by software to be a special-purpose computer to perform thefunctions described herein for that machine. For example, a computersystem able to implement any one or more of the methodologies describedherein is discussed below with respect to FIG. 10. As used herein, a“database” is a data storage resource and may store data structured as atext file, a table, a spreadsheet, a relational database (e.g., anobject-relational database), a triple store, a hierarchical data store,or any suitable combination thereof. Moreover, any two or more of themachines illustrated in FIG. 1 may be combined into a single machine,and the functions described herein for any single machine may besubdivided among multiple machines.

The network 190 may be any network that enables communication betweenmachines (e.g., pixel history machine 110 and the user device 130).Accordingly, the network 190 may be a wired network, a wireless network(e.g., a mobile or cellular network), or any suitable combinationthereof. The network 190 may include one or more portions thatconstitute a private network, a public network (e.g., the Internet), orany suitable combination thereof

FIG. 2-5 are conceptual diagrams illustrating presentation of a previousscreen 210 (e.g., a first screen) prior to presentation of a currentscreen 220 (e.g., a second screen), and a subsequent presentation of aprevious portion 212 (e.g., a first portion) of the previous screen 210within the current screen 220, according some example embodiments. Asshown in FIG. 2, the previous screen 210 includes the previous portion212. After presentation of the previous screen 210, the previous screen210 is replaced (e.g., refreshed, redrawn, or repainted) with thecurrent screen 220, as indicated by a curved arrow.

The current screen 220 is distinct from the previous screen 210, atleast by virtue of a current portion 222 that is distinct from theprevious portion 212. The current screen 220 includes the currentportion 222 (e.g., a second portion). The current portion 222 of thecurrent screen 220 may have the same location, the same dimensions, thesame corners, the same area, or any suitable combination thereof, as theprevious portion 212 of the previous screen 210. That is, the currentportion 222 may be at a location (e.g., a particular location having aparticular area with particular dimensions) within the current screen220, and the previous portion 212 may be at the same location (e.g., thesame particular location with the same particular area and dimensions)within the previous screen 210. In particular, the area of the previousportion 212 and the area of the current portion 222 may both be theproduct of the same pixel width (e.g., 320 pixels wide) and the samepixel height (e.g., 240 pixels high). Accordingly, the previous portion212 and the current portion 222 may both have the same number of pixels(e.g., 76,800 pixels).

FIG. 2 depicts the previous portion 212 and the current portion 222 asrectangular regions of their respective screens. Such rectangularregions may be a size (e.g., small, medium, or large) in comparison totheir respective screens. Moreover, according to various exampleembodiments, the previous portion 212, the current portion 222, or both,may be or include an image, an icon, a user-defined area (e.g., definedby the user 112 or the user 132), the user-defined number of pixels(e.g., defined by the user 112 for the user 132), or any suitablecombination thereof

As shown in FIG. 2, after presentation of the current screen 220 withthe current portion 222, the previous portion 212 is presented withinthe current screen 220. FIG. 2 depicts the previous portion 212 asreplacing the current portion 222 within the current screen 220. This isindicated by another curved arrow. Accordingly, the presentation of theprevious portion 212 within the current screen 220 may have the effectof performing a location-based display of pixel history, where theprevious portion 212 of the previous screen 210 includes historicallypresented pixels (e.g., previously displayed pixels) with respect to thecurrent portion 222 of the current screen 220.

According to various example embodiments, the previous screen 210 andthe current screen 220 may be webpages (e.g., entire webpages or any oneor more portions thereof) presented at different times, documents (e.g.,pages or tables) displayed at different times, desktops (e.g., userinterfaces with backgrounds and icons) presented at different times,individual movie or video frames presented at different times, or anysuitable combination thereof.

FIG. 3 depicts the previous portion 212 and the current portion 222 asareas encompassing one or more horizontal rows of pixels within theirrespective screens. In particular, FIG. 3 depicts the previous portion212 and the current portion 222 as rectangular rows. In some exampleembodiments, the previous portion 212 and the current portion 222stretch from the left edge to the right edge of their respectivescreens.

FIG. 4 depicts the previous portion 212 and the current portion 222 asareas encompassing one or more vertical columns of pixels within theirrespective screens. In particular, FIG. 4 depicts the previous portion212 and the current portion 222 as rectangular columns. In some exampleembodiments, the previous portion 212 and the current portion 222stretch from the top edge to the bottom edge of their respectivescreens. In general, the previous portion 212 and the current portion222 may be of any shape or size and may be at any location on theirrespective screens.

As shown in FIG. 5, the presentation of the previous portion 212 withinthe current screen 220 may be contemporaneous with the presentation ofthe current portion 222 within the current screen 220. In some exampleembodiments, multiple portions that were previously presented (e.g.,previous portion 212, plus further previously presented portions offurther previously presented screens) are presented alongside thecurrent portion 222 within the current screen 220. This may have theeffect of providing a visual comparison of how a sequence of multiplescreens (e.g., multiple screens with distinctive portions thereof)looked at different times in the past. That is, some example embodimentsmay facilitate a location-based display of pixel history, where a user(e.g., user 112 or user 132) may view historically presented pixels(e.g., previously displayed pixels) as they changed over time in thearea encompassed by the current portion 222 of the current screen 220.

FIG. 6 is a block diagram illustrating components of the pixel historymachine 110, according to some example embodiments. The pixel historymachine 110 is shown as including a screen module 610, a request module620, a presentation module 630, a definition module 640, and a storagemodule 650, all configured to communicate with each other (e.g., via abus, shared memory, or a switch). Any one or more of the modulesdescribed herein may be implemented using hardware (e.g., a processor ofa machine) or a combination of hardware and software. For example, anymodule described herein may configure a processor to perform theoperations described herein for that module. Moreover, any two or moreof these modules may be combined into a single module, and the functionsdescribed herein for a single module may be subdivided among multiplemodules.

The screen module 610 is configured to present one or more screens(e.g., within a sequence of multiple screens) in a sequential manner.For example, the screen module 610 may present the previous screen 210at a particular point in time (e.g., five minutes ago or five secondsago) and then present the current screen 220 at a later point in time(e.g., one second ago or now). Accordingly, the current screen 220 maybe a screen that is currently being presented by the screen module 610.Accordingly, the screen module 610 may present the previous screen 210prior to presenting the current screen 220. The presentation of a screenmay be performed by communicating (e.g., providing) the screen to a userdevice (e.g., user device 130) or by displaying the screen. Moreover, apresentation of a screen by the screen module 610 may be modified by thepresentation module 630, as described below.

In some example embodiments, the screen module 610 presents the currentscreen 220, or any portion thereof, by communicating the current screen220, or any portion thereof, to a user device (e.g., user device 130) ofa user (e.g., user 132) to whom the previous screen 210 was presented atsome time in the past. In alternative example embodiments, the screenmodule 610 presents the current screen 220 by directly displaying thecurrent screen 220 on a display that is communicatively coupled (e.g.,connected) to the pixel history machine 110, which may be a user deviceof a user (e.g., user 112) to whom the previous screen 210 was presentedin the past.

The request module 620 is configured to receive a request (e.g., auser-submitted request) that the previous portion 212 of the previousscreen 210 be presented within the current screen 220, which may becurrently presented by the screen module 610. The request may bereceived as a submission from a user (e.g., user 112 or user 132) towhom the current screen 220 is being presented by the screen module 610.For example, the current screen 220 may be currently presented to theuser 132 via the user device 130, and the request may be received fromthe user device 130 as a submission from the user 132. As anotherexample, the current screen 220 may be currently presented to the user112 by the pixel history machine 110, and the request may be received bythe pixel history machine 110 from the user 112.

The presentation module 630 is configured to present the previousportion 212 of the previous screen 210 within the current screen 220(e.g., contemporaneously with the current portion 222 of the currentscreen 220). For example, the presentation module 630 may modify thepresentation of the current screen 220, which may be currently presented(e.g., in an on-going manner) by the screen module 610). For example,the presentation module 630 may replace the current portion 222 with theprevious portion 212 within the current screen 220. In certain exampleembodiments, the presentation module 630 adds the previous portion 212to the current screen 220, overlays the previous portion 212 over thecurrent screen 220, or any suitable combination thereof. Thepresentation module 630 may present the previous portion 212 in responseto the request received by the request module 620.

The definition module 640 is configured to receive a location as adefinition of an area for the previous portion 212, for the currentportion 222, or for both. In other words, the area may be defined tohave boundaries that are coincident with boundaries of the previousportion 212, boundaries of the current portion 222, or boundaries ofboth. In some example embodiments, the previous portion 212 and thecurrent portion 222 have the same location, the same dimensions, thesame corners, the same area, or any suitable combination thereof.Accordingly, the definition module 640 may receive the location as adefinition of such an area. This location may form all or part of abasis for location-based display of pixel history (e.g., historicallypresented pixels within the previous portion 212 of the previous screen210). Moreover, the location may be received as a submission from a user(e.g., the user to whom the current screen 220 is being presented by thescreen module 610). In some example embodiments, the boundaries of theprevious portion 212 and the boundaries of the current portion 222 arenot the same (e.g., not coincident with each other). In such a case, thedefinition module 640 may be configured to determine a common subset ofpixels enclosed by both sets of boundaries (e.g., an area defining pixellocations that are common to both the previous portion 212 and thecurrent portion 222). In alternative example embodiments, the definitionmodule 640 determines an area enclosed by at least one set of boundaries(e.g., an area defining pixel locations and closed by the previousportion 212, the current portion 222, or both). Accordingly, thedefinition module 640 may present a user (e.g., user 112 or user 132)with a choice (e.g., via a notification or a widget) to display theprevious portion 212, the current portion 222, an area common to boththe previous portion 212 and the current portion 222, or an areaenclosed by at least one of the previous portion 212 or the currentportion 222. In such example embodiments, the screen module 610 may beconfigured to present whichever area is chosen by the user.

The storage module 650 is configured to store the previous portion 212of the previous screen 210 in a memory buffer (e.g., a browser cachestored at the user device 130, the pixel history machine 110, or thedatabase 115). The storing of the previous portion 212 may be based onthe receiving of the location (e.g., the definition of the area for theprevious portion 212 and for the current portion 222) by the definitionmodule 640. Further details of various modules of the pixel historymachine 110 are described below with respect to FIG. 7-9.

FIG. 7-9 are flowcharts illustrating operations of the pixel historymachine 110 in performing a method 700 of location-based display ofpixel history, according to some example embodiments. Operations in themethod 700 may be performed by the pixel history machine 110, usingmodules described above with respect to FIG. 6. As noted above, in someexample embodiments, the pixel history machine 110 may be a user device(e.g., similar to the user device 130 or the user device 150), which mayinclude modules similar to those described above with respect to FIG. 6.As shown in FIG. 7, the method 700 includes operations 710, 720, and730.

In operation 710, the screen module 610 presents the current screen 220.For example, the screen module 610 may communicate (e.g., provide) thecurrent screen 220 to the user device 130, for presentation on a displayconnected or communicatively coupled thereto. As another example, thescreen module 610 may display the current screen 220 directly on adisplay (e.g., a monitor, flat-panel display, or touch screen) that isconnected to the pixel history machine 110. Further details of operation710 are discussed below with respect to FIG. 8-9.

In operation 720, the request module 620 receives a request (e.g., auser-submitted request) that the previous portion 212 of the previousscreen 210 be presented within the current screen 220. During operation710, the current screen 220 may be currently presented by the screenmodule 610 (e.g., as a result of performing operation 710). Moreover,the request may be received by the request module 620 as a submissionfrom a user (e.g., user 112 or user 132) to whom the current screen 220is being presented (e.g., by the screen module 610 in the course ofperforming operation 710). Further details of operation 720 arediscussed below with respect to FIG. 8-9.

In operation 730, the presentation module 630 presents the previousportion 212 of the previous screen 210 within the current screen 220.Presentation of the previous portion 212 may be contemporaneous withpresentation of the current portion 222 of the current screen 220.Moreover, the presentation of the previous portion 212 may be inresponse to the request received in operation 720. Further details ofoperation 730 are discussed below with respect to FIG. 8-9.

As shown in FIG. 8, the method 700 may include one or more of operations802, 803, 804, 805, 807, 808, 815, 817, 822, 823, 825, 832, 834, 835,836, 837, and 838. In operation 802, the definition module 640 receivesthe location of the current portion 222 and of the previous portion 212(e.g., with respect to the current screen 220 and to the previous screen210). This location may be received as a definition of an area (e.g., arectangular area having a pixel width and a pixel height). This area mayhave boundaries that are coincident with the current portion 222 (e.g.,coincident with boundaries of the current portion 222) and that arecoincident with the previous portion 212 (e.g., coincident withboundaries of the previous portion 212). Moreover, the location (e.g.,the definition of the area) may be received as a submission from a user(e.g., user 112 or user 132) to whom the current screen 220 is beingpresented and to whom the previous screen 210 was presented in the past(e.g., five minutes ago). According to various example embodiments, thedefinition of the area may define a column within the previous screen210 (e.g., as shown in FIG. 4), a row within the previous screen 210(e.g., as shown in FIG. 3), or a rectangle within the previous screen210 (e.g., as shown in FIG. 2 and FIG. 5).

According to some example embodiments, performance of operation 802initiates (e.g., clears or refreshes) a memory buffer within which theprevious portion 212 may be stored (e.g., as discussed below withrespect to operation 808). This may have the effect of allowing a user(e.g., user 112 or user 132) to define or redefine (e.g., multipletimes) the location of the previous portion 212 and of the currentportion 222. The reception of the location may cause the pixel historymachine 110 to begin storing (e.g., in the memory buffer) portions ofscreens that appear at the location. Accordingly, a reception of a newlocation may cause the pixel history machine 110 to begin storingportions of screens that appear at the new location. Thus, certainexample embodiments allow the user to create, modify, update, or deletethe area that is defined for location-based display of pixel historywithin each screen among a sequence of multiple screens.

Operation 803 may be performed as part (e.g., a precursor task, asubroutine, or a portion) of operation 802, in which the definitionmodule 640 receives the location of the current portion 222 and of theprevious portion 212. In operation 803, the definition module 640receives coordinates of one or more corners of the area defined by thelocation received in operation 802. For example, the area may be definedby four corners of a rectangular area, and the coordinates of thesecorners may be received (e.g., one by one, or all together) in operation803. As noted above, the area may have boundaries that are coincidentwith the current portion 222 and coincident with the previous portion212.

In operation 804, the screen module 610 presents the previous screen 210with the previous portion 212. This presentation of the previous screen210 may be performed in a manner similar to that described above withrespect to operation 710 (e.g., earlier in time compared to thepresenting of the current screen 220 with the current portion 222).

According to some example embodiments, the previous screen 210 is aprevious webpage (e.g., a previous document shown within a browserwindow), and the current screen 220 is a current webpage (e.g., acurrent document shown within the same browser window). Accordingly,operation 805 may be performed as part (e.g., a precursor task, asubroutine, or a portion) of operation 804; operation 815 may beperformed as part of operation 710; and operation 835 may be performedas part of operation 730. More specifically, in the performance ofoperation 804, the screen module 610 may perform operation 805 bypresenting the previous screen 210 as the previous webpage. In theperformance of operation 710, the screen module 610 may performoperation 815 by presenting the current screen 220 as the currentwebpage. In the performance of operation 730, the presentation module630 may perform operation 835 by presenting the previous portion 212within the current webpage presented in operation 815.

According to certain example embodiments, the previous screen 210 is aprevious desktop (e.g., a previous background with a previous set oficons), and the current screen 220 is a current desktop (e.g., a currentbackground with a current set of icons). Accordingly, operation 807 maybe performed as part (e.g., a precursor task, a subroutine, or aportion) of operation 804; operation 817 may be performed as part ofoperation 710; and operation 837 may be performed as part of operation730. More specifically, in the performance of operation 804, the screenmodule 610 may perform operation 807 by presenting the previous screen210 as the previous desktop. In the performance of operation 710, thescreen module 610 may perform operation 817 by presenting the currentscreen 220 as the current desktop. In the performance of operation 730,the presentation module 630 may perform operation 837 by presenting theprevious portion 212 within the current desktop presented in operation817.

In operation 808, the storage module 650 stores the previous portion 212in a memory buffer (e.g., a browser cache or other data repositorystored at the user device 130, the pixel history machine 110, or thedatabase 115). The storing of the previous portion 212 may be based on(e.g., triggered by or responsive to) the receiving of the location(e.g., the receiving of the definition of the area) for the previousportion 212 in operation 802. This may have the effect of enablingaccess to the previous portion 212 at a time when the previous screen210 is no longer being presented (e.g., at a time when the currentscreen 220 is being presented).

Operation 822 may be performed as part (e.g., a precursor task, asubroutine, or a portion) of operation 720, in which the request module620 receives the request that the previous portion 212 be presentedwithin the current screen 220. In operation 822, the request module 620detects a gesture (e.g., a touch-based input, a motion-based input, orany suitable combination thereof) that identifies the location of thecurrent portion 222 of the current screen 220. This location may be thesame location received in operation 802. This may have the effect ofenabling a user (e.g., user 112 or user 132) to submit the requestreceived in operation 720 via a gesture-based command (e.g., on atouch-sensitive display).

One or more of operations 823 and 825 may be performed as part ofoperation 822, in which the request module 620 detects the gesture thatidentifies a location of the current portion 222. In operation 823, therequest module 620 detects the gesture as a swipe (e.g., a draggedtouch) over the current portion 222 of the current screen 220 or anypart thereof In operation 825, the request module 620 detects thegesture as a number of taps (e.g., a double tap) on at least part of thecurrent portion 222 of the current screen 220. In some exampleembodiments, the request module 620 performs operation 825 by detectinga number of clicks (e.g., a double click) on at least part of thecurrent portion 222.

One or more of operations 832, 834, 836, and 838 may be performed aspart (e.g., a precursor task, a subroutine, or a portion) of operation730, in which the presentation module 630 presents the previous portion212 within the current screen 220. In operation 832, the presentationmodule 630 accesses the previous portion 212 from a memory buffer (e.g.,the memory buffer used in operation 808 to store the previous portion212). In some example embodiments, operation 832 may include accessingthe previous screen 210 (e.g., in its entirety), or any one or moreportions thereof, from the memory buffer. As noted above, this memorybuffer may be a browser cache or other data repository (e.g., stored atthe user device 130, the pixel history machine 110, or the database115). This may have the effect of retrieving the previous portion 212from the memory buffer (e.g., from the browser cache).

In operation 834, the presentation module 630 presents the previousportion 212 of the previous screen 210 by presenting the current portion222 of the current screen 220 contemporaneously (e.g., simultaneously,in parallel, in tandem, or any suitable combination thereof) with theprevious portion 212 of the previous screen 210. An example of such apresentation is shown in FIG. 5 and discussed above with respect to FIG.5.

According to some example embodiments, the previous portion 212 of theprevious screen 210 depicts a set of one or more icons (e.g., within adesktop that includes a background and the set of icons). In cases wherethe previous portion 212 of the previous screen 210 depicts a particularsingle icon, the current portion 222 of the current screen 220 maydepict a different single icon. Hence, the location of the previousportion 212 and of the current portion 222 may be occupied by a sequenceof multiple icons that were presented one by one over a period of time.In operation 836, the presentation module 630 presents the previousportion 212 of the previous screen 210 as one icon among the multipleicons that occupied the location in the past.

According to certain example embodiments, the previous portion 212 ofthe previous screen 210 depicts a set of one or more images (e.g., apicture within a webpage displayed in a browser window). In cases wherethe previous portion 212 of the previous screen 210 depicts a particularsingle image, the current portion 222 of the current screen 220 maydepict a different single image. Hence, the location of the previousportion 212 and of the current portion 222 may be occupied by a sequenceof multiple images that were presented one by one over a period of time.In operation 838, the presentation module 630 presents the previousportion 212 of the previous screen 210 as one image among multipleimages that occupied the location in the past.

As shown in FIG. 9, the method 700 may include one or more of operations906, 912, 922, 932, and 936. Operation 906 may be performed as part(e.g., a precursor task, a subroutine, or a portion) of operation 808,in which the storage module 650 stores the previous portion 212 in amemory buffer. According to various example embodiments, the previousportion 212 of the previous screen 210 is a hyperlink that correspondsto a locator of information (e.g., a uniform resource locator (URL)).That is, the hyperlink may be operable to make a request for informationthat is locatable by the corresponding URL. For example, the previousscreen 210 may be a webpage, and the previous portion 212 of theprevious screen 210 may be a hyperlink that links the web page with afurther webpage. In operation 906, the storage module 650 stores a URLthat corresponds to the previous portion 212 of the previous screen 210.The URL may be stored with the previous portion 212 in the memory buffer(e.g., browser cache). Moreover, this URL may be later used in thepresenting of the previous portion 212 within the current screen 220 inaccordance with operation 730.

Operation 912 may be performed as part (e.g., a precursor task, asubroutine, or a portion) of operation 710, in which the screen module610 presents the current screen 220. In operation 912, the screen module610 provides the current screen 220 to a user device (e.g., user device130) of a user (e.g., user 132) to whom the previous screen 210 waspresented.

Operation 922 may be performed as part (e.g., a precursor task, asubroutine, or a portion) of operation 720, in which the request module620 receives the request that the previous portion 212 be presentedwithin the current screen 220. In operation 922, the request module 620receives the request from the user device discussed above with respectto operation 912. In other words, the request module 620 may receive arequest from the user device (e.g., user device 130) of the user (e.g.,user 132) to whom the previous screen 210 was presented. This may havethe effect of allowing the user to request a retrieval of the previousportion 212 of the previous screen 210 (e.g., so that the previousportion 212 may be compared with the current portion 222).

One or more of operations 932 and 936 may be performed as part (e.g., aprecursor task, a subroutine, or a portion) of operation 730, in whichthe presentation module 630 presents the previous portion 212 of theprevious screen 210 within the current screen 220. In operation 932, thepresentation module 630 determines the previous portion 212. Forexample, the presentation module 630 may determine the corners,dimensions, boundaries, area, or any suitable combination thereof, ofthe previous portion 212. This determination may be made based on thelocation of the current portion 222 within the current screen 220. Asnoted above, the current portion 222 and the previous portion 212 mayshare the same location, same corners, same dimensions, same boundaries,same area (e.g., same pixel width and same pixel height), same number ofpixels, or any suitable combination thereof.

In operation 936, the presentation module 630 presents the previousportion 212 of the previous screen 210 as a hyperlink that is operableto make a request (e.g., a further and separate request, in comparisonto the request received in operation 720) for information that islocatable by the URL stored in operation 906.

According to various example embodiments, one or more of themethodologies described herein may facilitate the presentation of apixel history (e.g., pixels previously presented), based on the locationof pixels. Moreover, one or more of the methodologies described hereinmay facilitate recall or retrieval of previously displayed pixels (e.g.,in the form of one or more icons, one or more images, one or more rows,one or more columns, one or more rectangular areas, or any suitablecombination thereof) for a user to whom the pixels were previouslydisplayed. Hence, one or more of the methodologies described herein mayfacilitate comparison of previously displayed pixels with currentlydisplayed pixels. In addition, previously displayed pixels may bepresented as a hyperlink, which may have the effect of facilitatingoperation of a previously presented hyperlink (e.g., in comparison withoperation of a currently presented hyperlink).

When these effects are considered in aggregate, one or more of themethodologies described herein may obviate a need for certain efforts orresources that otherwise would be involved in recalling, retrieving, oroperating previously presented pixels, hyperlinks, or any suitablecombination thereof. Efforts expended by a user in performing thesetasks may be reduced by one or more of the methodologies describedherein. Computing resources used by one or more machines, databases, ordevices (e.g., within the network environment 100) may similarly bereduced. Examples of such computing resources include processor cycles,network traffic, memory usage, data storage capacity, power consumption,and cooling capacity.

FIG. 10 is a block diagram illustrating components of a machine 1000,according to some example embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium) andperform any one or more of the methodologies discussed herein.Specifically, FIG. 10 shows a diagrammatic representation of the machine1000 in the example form of a computer system and within whichinstructions 1024 (e.g., software) for causing the machine 1000 toperform any one or more of the methodologies discussed herein may beexecuted. In alternative embodiments, the machine 1000 operates as astandalone device or may be connected (e.g., networked) to othermachines. In a networked deployment, the machine 1000 may operate in thecapacity of a server machine or a client machine in a server-clientnetwork environment, or as a peer machine in a peer-to-peer (ordistributed) network environment. The machine 1000 may be a servercomputer, a client computer, a personal computer (PC), a tabletcomputer, a laptop computer, a netbook, a set-top box (STB), a personaldigital assistant (PDA), a cellular telephone, a smartphone, a webappliance, a network router, a network switch, a network bridge, or anymachine capable of executing the instructions 1024, sequentially orotherwise, that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include a collection of machines that individually orjointly execute the instructions 1024 to perform any one or more of themethodologies discussed herein.

The machine 1000 includes a processor 1002 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (RFIC), or any suitable combinationthereof), a main memory 1004, and a static memory 1006, which areconfigured to communicate with each other via a bus 1008. The machine1000 may further include a graphics display 1010 (e.g., a plasma displaypanel (PDP), a light emitting diode (LED) display, a liquid crystaldisplay (LCD), a projector, or a cathode ray tube (CRT)). The machine1000 may also include an alphanumeric input device 1012 (e.g., akeyboard), a cursor control device 1014 (e.g., a mouse, a touchpad, atrackball, a joystick, a motion sensor, or other pointing instrument), astorage unit 1016, a signal generation device 1018 (e.g., a speaker),and a network interface device 1020.

The storage unit 1016 includes a machine-readable medium 1022 on whichis stored the instructions 1024 (e.g., software) embodying any one ormore of the methodologies or functions described herein. Theinstructions 1024 may also reside, completely or at least partially,within the main memory 1004, within the processor 1002 (e.g., within theprocessor's cache memory), or both, during execution thereof by themachine 1000. Accordingly, the main memory 1004 and the processor 1002may be considered as machine-readable media. The instructions 1024 maybe transmitted or received over a network 1026 (e.g., network 190) viathe network interface device 1020.

As used herein, the term “memory” refers to a machine-readable mediumable to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 1022 is shown in an example embodiment to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storeinstructions. The term “machine-readable medium” shall also be taken toinclude any medium, or combination of multiple media, that is capable ofstoring instructions (e.g., software) for execution by a machine (e.g.,machine 1000), such that the instructions, when executed by one or moreprocessors of the machine (e.g., processor 1002), cause the machine toperform any one or more of the methodologies described herein.Accordingly, a “machine-readable medium” refers to a single storageapparatus or device, as well as “cloud-based” storage systems or storagenetworks that include multiple storage apparatus or devices. The term“machine-readable medium” shall accordingly be taken to include, but notbe limited to, one or more data repositories in the form of asolid-state memory, an optical medium, a magnetic medium, or anysuitable combination thereof

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A “hardware module” is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule may include software encompassed within a general-purposeprocessor or other programmable processor. It will be appreciated thatthe decision to implement a hardware module mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software mayaccordingly configure a processor, for example, to constitute aparticular hardware module at one instance of time and to constitute adifferent hardware module at a different instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules. Moreover, theone or more processors may also operate to support performance of therelevant operations in a “cloud computing” environment or as a “softwareas a service” (SaaS). For example, at least some of the operations maybe performed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

The performance of certain of the operations may be distributed amongthe one or more processors, not only residing within a single machine,but deployed across a number of machines. In some example embodiments,the one or more processors or processor-implemented modules may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In other exampleembodiments, the one or more processors or processor-implemented modulesmay be distributed across a number of geographic locations.

Some portions of this specification are presented in terms of algorithmsor symbolic representations of operations on data stored as bits orbinary digital signals within a machine memory (e.g., a computermemory). These algorithms or symbolic representations are examples oftechniques used by those of ordinary skill in the data processing artsto convey the substance of their work to others skilled in the art. Asused herein, an “algorithm” is a self-consistent sequence of operationsor similar processing leading to a desired result. In this context,algorithms and operations involve physical manipulation of physicalquantities. Typically, but not necessarily, such quantities may take theform of electrical, magnetic, or optical signals capable of beingstored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

What is claimed is:
 1. A method comprising: presenting, on a display ofa user device, a current screen including an element distinct from aprevious element of a previous screen, wherein the previous element waspresented at a location on less than an entirety of the previous screen;receiving, by the user device, a gesture input that requests that theprevious element be presented within the current screen next to acurrent element of the current screen, the gesture input indicating alocation of the current element, wherein the location of the currentelement is less than an entirety of the current screen and is the samelocation at which the previous element was presented on the previousscreen; and presenting, on the display of the user device, acontemporaneous view of the previous element next to the current elementat the location of the current element within the current screen, thepresenting being performed in response to the received gesture input. 2.The method of claim 1, wherein said gesture input comprises a swipe overthe current element.
 3. The method of claim 1, wherein said gestureinput comprises a double tap on the current element.
 4. The method ofclaim 1, wherein said gesture input comprises a touch-based input. 5.The method of claim 1, wherein said gesture input comprises amotion-based input.
 6. The method of claim 1, wherein said gesture inputcomprises a combination of a touch-based input and a motion-based input.7. The method of claim 1, wherein the current element and the previouselement comprise images or icons.
 8. The method of claim 1, wherein saidpresenting a contemporaneous view of the previous element comprisespresenting multiple previous elements next to the current element.
 9. Acomputing device comprising: a display; one or more processors; one ormore non-transitory computer readable storage media; computer readableinstructions stored on the non-transitory computer readable storagemedia which, when executed by the one or more processors, cause the oneor more processors to perform operations comprising: presenting, on thedisplay of the computing device, a current screen including an elementdistinct from a previous element of a previous screen, wherein theprevious element was presented at a location on less than an entirety ofthe previous screen; receiving, by the computing device, a gesture inputthat requests that the previous element be presented within the currentscreen next to a current element of the current screen, the gestureinput indicating a location of the current element, wherein the locationof the current element is less than an entirety of the current screenand is the same location at which the previous element was presented onthe previous screen; and presenting, on the display of the computingdevice, a contemporaneous view of the previous element next to thecurrent element at the location of the current element within thecurrent screen, the presenting being performed in response to thereceived gesture input.
 10. The computing device of claim 9, whereinsaid gesture input comprises a swipe over the current element.
 11. Thecomputing device of claim 9, wherein said gesture input comprises adouble tap on the current element.
 12. The computing device of claim 9,wherein said gesture input comprises a touch-based input.
 13. Thecomputing device of claim 9, wherein said gesture input comprises amotion-based input.
 14. The computing device of claim 9, wherein saidgesture input comprises a combination of a touch-based input and amotion-based input.
 15. The computing device of claim 9, wherein thecurrent element and the previous element comprise images or icons. 16.The computing device of claim 9, wherein said presenting acontemporaneous view of the previous element comprises presentingmultiple previous elements next to the current element.
 17. Anon-transitory computer readable storage medium storing instructionswhich, when executed, perform operations comprising: presenting, on adisplay of a computing device, a current screen including an elementdistinct from a previous element of a previous screen, wherein theprevious element was presented at a location on less than an entirety ofthe previous screen; receiving, by the computing device, a gesture inputthat requests that the previous element be presented within the currentscreen next to a current element of the current screen, the gestureinput indicating a location of the current element, wherein the locationof the current element is less than an entirety of the current screenand is the same location at which the previous element was presented onthe previous screen; and presenting, on the display of the computingdevice, a contemporaneous view of the previous element next to thecurrent element at the location of the current element within thecurrent screen, the presenting being performed in response to thereceived gesture input.
 18. The non-transitory computer readable storagemedium of claim 17, wherein said gesture input comprises at least oneof: a swipe over the current element or a double tap on the currentelement.
 19. The non-transitory computer readable storage medium ofclaim 17, wherein said gesture input comprises a touch-based input. 20.The non-transitory computer readable storage medium of claim 17, whereinsaid gesture input comprises a motion-based input.